package src.greed;

import java.util.Arrays;

public class no1005 {// K 次取反后最大化的数组和

    public int largestSumAfterKNegations(int[] nums, int k) {

        Arrays.sort(nums);

//        int i = 0;
//        while (i < k) {
//            if (nums[i] == 0) {
//                break;
//            }
//            if (nums[i] < 0) {
//                nums[i] = -nums[i];
//                i++;
//            }
//            if (nums[i] > 0 && k % 2 == 0) {
//                break;
//            }
//            if (nums[i] > 0 && k % 2 == 1) {
//                nums[i] = -nums[i];
//                i++;
//            }
//        }

        //先消耗点所有的负数，把负数都变正
        for(int i=0;i<nums.length && k>0;i++){
            if(nums[i]<0 ){
                nums[i]=-nums[i];
                k--;
            }
        }
        //出循环时，若k还为消耗完，k为偶 不用管，k为奇 把现在数组中的最小数取反即可
        if(k%2==1){
            Arrays.sort(nums);
            nums[0] = -nums[0];
        }

        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        return sum;
    }
}
